# -*- coding: UTF-8 -*-
from django.conf import settings
from django.utils import httpwrappers

class XViewMiddleware:
    """
    Ajoute un en-tête X-View aux requêtes internes de type HEAD (sert au système de documentation).
    """

    def process_view(self, request, view_func, param_dict):
        """
        Si la méthode de la requête spécifiée est HEAD et si l'adresse IP ayant
        émis la requête est une adresse IP interne, on renvoie rapidement un
        en-tête X qui indique la fonction-vue correspondante.  Cette fonctionnalité
        est utilisée par le module de documentation afin de rechercher rapidement
        la fonction-vue correspondant à une page arbitraire.
        """
        if request.META['REQUEST_METHOD'] == 'HEAD' and request.META['REMOTE_ADDR'] in settings.INTERNAL_IPS:
            response = httpwrappers.HttpResponse()
            response['X-View'] = "%s.%s" % (view_func.__module__, view_func.__name__)
            return response
